home *** CD-ROM | disk | FTP | other *** search
/ SGI Hot Mix 17 / Hot Mix 17.iso / HM17_SGI / research / lib / threed.pro < prev    next >
Text File  |  1997-07-08  |  2KB  |  100 lines

  1. ; $Id: threed.pro,v 1.2 1996/12/17 01:21:43 ali Exp $
  2.  
  3. PRO     THREED,A,SP, Title = title, Xtitle = Xtitle, Ytitle=Ytitle
  4. ;
  5. ;+
  6. ; NAME:
  7. ;    THREED
  8. ;
  9. ; PURPOSE:
  10. ;    Plot a 2D array as a pseudo 3D plot.
  11. ;
  12. ; CATEGORY:
  13. ;    J7 Plotting, graphics, multi-dimensional.
  14. ;
  15. ; CALLING SEQUENCE:
  16. ;    THREED, A [, Sp]
  17. ;
  18. ; INPUTS:
  19. ;    A:    The two-dimensional array to plot.
  20. ;
  21. ; OPTIONAL INPUT PARAMETERS:
  22. ;    Sp:    Spacing between plot lines.  If sp is omitted, the spacing 
  23. ;        is set to: 
  24. ;            (MAX(A)-MIN(A))/ROWS
  25. ;        If Sp is negative, hidden lines are not removed.
  26. ;
  27. ; KEYWORDS:
  28. ;    TITLE:    The main plot title.
  29. ;
  30. ;    XTITLE:    The X axis title.
  31. ;
  32. ;    YTITLE:    The Y axis title.
  33. ;
  34. ; OUTPUTS:
  35. ;    None.
  36. ;
  37. ; COMMON BLOCKS:
  38. ;    None.
  39. ;
  40. ; SIDE EFFECTS:
  41. ;    A plot is produced on the currently selected graphics device.
  42. ;
  43. ; RESTRICTIONS:
  44. ;    Orientation of data is fixed.
  45. ;    Use the built-in procedure SURFACE for a more comprehensive surface 
  46. ;    plotting routine.
  47. ;
  48. ; PROCEDURE:
  49. ;    Straightforward.
  50. ;    A vector is maintained of the previous maximum plotted Y.
  51. ;    The PLOT and OPLOT procedures are used.
  52. ;
  53. ; MODIFICATION HISTORY:
  54. ;    VERSION 1.2, CREATED BY D. LINDLER, AUGUST 5,1980
  55. ;    VERSION 1.3, CREATED BY I. DEAN AHMAD, JANUARY 28, 1981
  56. ;    MODIFIED FOR VAX, DMS, SEPT, 1982.
  57. ;    Modified for Unix, DMS, 2/15/88.
  58. ;-
  59. ;
  60. ON_ERROR,2        ;RETURN TO CALLER IF ERROR
  61. ;
  62. ; DETERMINE SIZE OF A
  63. ;
  64. IDEM=SIZE(A) & M=IDEM[1] & N=IDEM[2]
  65. IF N_ELEMENTS(A) NE N*M THEN message, 'Sorry, not two dimensional.'
  66. ;
  67. IF N_PARAMS(0) EQ 1 THEN SP = (MAX(A)-MIN(A))/FLOAT(N) ;FAKE SPACING
  68. ;
  69. ; DEFINE ARRAYS FOR THE X AND Y AXIS
  70. ;
  71. X=INDGEN(M)
  72. ;
  73. ; DETERMINE PLOT SCALE
  74. ;
  75. ADD = A+(INDGEN(M,N)/M)*ABS(SP) ;ARRAY + INCREMENT
  76. YMAX=MAX(ADD)
  77. YMIN=MIN(ADD)
  78. !C=0        ;DISABLE CURSOR
  79. ;
  80. ; DETERMINE IF HIDDEN LINES SHOULD BE PLOTTED
  81. ;
  82. OLDY=ADD[*,0]
  83.         ;PLOT THE SCALE AND THE FIRST LINE
  84. if n_elements(title) eq 0 then title = ''
  85. if n_elements(xtitle) eq 0 then xtitle = ''
  86. if n_elements(ytitle) eq 0 then ytitle = ''
  87.  
  88. PLOT,X,OLDY,xrange=[0.,m],yrange=[ymin,ymax], title=title, xtitle=xtitle,$
  89.     ytitle=ytitle
  90. ;
  91.   FOR I=1,N-1 DO BEGIN           ;LOOP TO PLOT EACH LINE
  92.   Y=ADD[*,I]            ;GET ROW
  93.   IF SP GE 0. THEN Y=Y>OLDY     ; REMOVE HIDDEN LINES
  94.   OPLOT,X,Y                    ;PLOT IT
  95.   OLDY=Y
  96.   END  ; FOR LOOP
  97. RETURN
  98. END  ;  THREED
  99.  
  100.